package moduloConsulta.gestores;

import java.util.ArrayList;
import java.util.Hashtable;
import entidades.Vocabulario;
import moduloConsulta.algoritmo.AlgoritmoConsulta;
import moduloConsulta.algoritmo.ObtenerConsulta;
import moduloConsulta.entidades.ResultadoConsulta;

public class GestorConsulta {
	
	private ArrayList<Vocabulario> listTerminoConsulta;
	private Hashtable<String, Vocabulario> tableVoc;
	private ObtenerConsulta obtenerCons;
	private AlgoritmoConsulta algoritmo;

	public GestorConsulta(){
		listTerminoConsulta = new ArrayList<Vocabulario>();
		
		tableVoc = new Hashtable<String, Vocabulario>();
		mapeo.MapVocabulario mapVoc = new mapeo.MapVocabulario();
		tableVoc.putAll( mapVoc.obtenerVocabulario() ); // Cargo la tabla con todo el Vocabulario almacenado en la BD
		
		obtenerCons = new ObtenerConsulta();
		algoritmo = new AlgoritmoConsulta();
	}
	
	/**
	 * Metodo que recibe un String como parametro y busca las palabras del String que se encuentran en el Vocabulario del sistema
	 * @param consulta string a analizar
	 */
	public void generarConsulta(String consulta){
		listTerminoConsulta = obtenerCons.generarConsulta(consulta, tableVoc);
	}
	
	/**
	 * Metodo que retorna la lista de Documentos como resultado de la Consulta
	 * @return una lista de documentos, que son el resultado de consulta.
	 */
	public ArrayList<ResultadoConsulta> resultadoConsulta(){
		ArrayList<ResultadoConsulta> listaResultado = algoritmo.resultadoConsulta(listTerminoConsulta);
		return listaResultado;
	}	
}
